<!-- HTML header for doxygen 1.8.6-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<title>OpenCV: Fundamental</title>
<link href="../../opencv.ico" rel="shortcut icon" type="image/x-icon" />
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../tutorial-utils.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
//<![CDATA[
MathJax.Hub.Config(
{
  TeX: {
      Macros: {
          matTT: [ "\\[ \\left|\\begin{array}{ccc} #1 & #2 & #3\\\\ #4 & #5 & #6\\\\ #7 & #8 & #9 \\end{array}\\right| \\]", 9],
          fork: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ \\end{array} \\right.", 4],
          forkthree: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ #5 & \\mbox{#6}\\\\ \\end{array} \\right.", 6],
          forkfour: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ #5 & \\mbox{#6}\\\\ #7 & \\mbox{#8}\\\\ \\end{array} \\right.", 8],
          vecthree: ["\\begin{bmatrix} #1\\\\ #2\\\\ #3 \\end{bmatrix}", 3],
          vecthreethree: ["\\begin{bmatrix} #1 & #2 & #3\\\\ #4 & #5 & #6\\\\ #7 & #8 & #9 \\end{bmatrix}", 9],
          cameramatrix: ["#1 = \\begin{bmatrix} f_x & 0 & c_x\\\\ 0 & f_y & c_y\\\\ 0 & 0 & 1 \\end{bmatrix}", 1],
          distcoeffs: ["(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \\tau_x, \\tau_y]]]]) \\text{ of 4, 5, 8, 12 or 14 elements}"],
          distcoeffsfisheye: ["(k_1, k_2, k_3, k_4)"],
          hdotsfor: ["\\dots", 1],
          mathbbm: ["\\mathbb{#1}", 1],
          bordermatrix: ["\\matrix{#1}", 1]
      }
  }
}
);
//]]>
</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
<link href="../../stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<!--#include virtual="/google-search.html"-->
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="../../opencv-logo-small.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">OpenCV
   &#160;<span id="projectnumber">4.5.2</span>
   </div>
   <div id="projectbrief">Open Source Computer Vision</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('../../',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">Fundamental<div class="ingroups"><a class="el" href="../../d8/d8c/group__sfm.html">Structure From Motion</a></div></div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga42e4e05b414d11f3abc29612f058d249"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d15/group__fundamental.html#ga42e4e05b414d11f3abc29612f058d249">cv::sfm::computeOrientation</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> x1, <a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> x2, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> R, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> t, double s)</td></tr>
<tr class="memdesc:ga42e4e05b414d11f3abc29612f058d249"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes Absolute or Exterior Orientation (Pose Estimation) between 2 sets of 3D point.  <a href="../../d7/d15/group__fundamental.html#ga42e4e05b414d11f3abc29612f058d249">More...</a><br /></td></tr>
<tr class="separator:ga42e4e05b414d11f3abc29612f058d249"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab948a699b18e85ed516d6e8e0b32c9e3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d15/group__fundamental.html#gab948a699b18e85ed516d6e8e0b32c9e3">cv::sfm::essentialFromFundamental</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> F, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> K1, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> K2, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> E)</td></tr>
<tr class="memdesc:gab948a699b18e85ed516d6e8e0b32c9e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get Essential matrix from Fundamental and Camera matrices.  <a href="../../d7/d15/group__fundamental.html#gab948a699b18e85ed516d6e8e0b32c9e3">More...</a><br /></td></tr>
<tr class="separator:gab948a699b18e85ed516d6e8e0b32c9e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga732858c7d49c6a44a4a91451b3374350"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d15/group__fundamental.html#ga732858c7d49c6a44a4a91451b3374350">cv::sfm::essentialFromRt</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> R1, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> t1, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> R2, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> t2, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> E)</td></tr>
<tr class="memdesc:ga732858c7d49c6a44a4a91451b3374350"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get Essential matrix from Motion (R's and t's ).  <a href="../../d7/d15/group__fundamental.html#ga732858c7d49c6a44a4a91451b3374350">More...</a><br /></td></tr>
<tr class="separator:ga732858c7d49c6a44a4a91451b3374350"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaac7556ce8ebb74b199d416a3e86861a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d15/group__fundamental.html#gaaac7556ce8ebb74b199d416a3e86861a">cv::sfm::fundamentalFromEssential</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> E, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> K1, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> K2, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> F)</td></tr>
<tr class="memdesc:gaaac7556ce8ebb74b199d416a3e86861a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get Essential matrix from Fundamental and Camera matrices.  <a href="../../d7/d15/group__fundamental.html#gaaac7556ce8ebb74b199d416a3e86861a">More...</a><br /></td></tr>
<tr class="separator:gaaac7556ce8ebb74b199d416a3e86861a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga02efdf4480a63d680a5dada595a88aa8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d15/group__fundamental.html#ga02efdf4480a63d680a5dada595a88aa8">cv::sfm::fundamentalFromProjections</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> P1, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> P2, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> F)</td></tr>
<tr class="memdesc:ga02efdf4480a63d680a5dada595a88aa8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get Fundamental matrix from Projection matrices.  <a href="../../d7/d15/group__fundamental.html#ga02efdf4480a63d680a5dada595a88aa8">More...</a><br /></td></tr>
<tr class="separator:ga02efdf4480a63d680a5dada595a88aa8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaee634880c5f298096ab2fc514de87cbd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d15/group__fundamental.html#gaee634880c5f298096ab2fc514de87cbd">cv::sfm::motionFromEssential</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> E, <a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> Rs, <a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> ts)</td></tr>
<tr class="separator:gaee634880c5f298096ab2fc514de87cbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6bd98cb968781abf62659eedc0d0481e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d15/group__fundamental.html#ga6bd98cb968781abf62659eedc0d0481e">cv::sfm::motionFromEssentialChooseSolution</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> Rs, <a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> ts, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> K1, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> x1, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> K2, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> x2)</td></tr>
<tr class="separator:ga6bd98cb968781abf62659eedc0d0481e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa37cc469d0c0573be08c3d55f6f1be8f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d15/group__fundamental.html#gaa37cc469d0c0573be08c3d55f6f1be8f">cv::sfm::normalizedEightPointSolver</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> x1, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> x2, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> F)</td></tr>
<tr class="memdesc:gaa37cc469d0c0573be08c3d55f6f1be8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Estimate the fundamental matrix between two dataset of 2D point (image coords space).  <a href="../../d7/d15/group__fundamental.html#gaa37cc469d0c0573be08c3d55f6f1be8f">More...</a><br /></td></tr>
<tr class="separator:gaa37cc469d0c0573be08c3d55f6f1be8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga99db07182e74de2ecf32d78fe1d5df41"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d15/group__fundamental.html#ga99db07182e74de2ecf32d78fe1d5df41">cv::sfm::normalizeFundamental</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> F, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> F_normalized)</td></tr>
<tr class="memdesc:ga99db07182e74de2ecf32d78fe1d5df41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Normalizes the Fundamental matrix.  <a href="../../d7/d15/group__fundamental.html#ga99db07182e74de2ecf32d78fe1d5df41">More...</a><br /></td></tr>
<tr class="separator:ga99db07182e74de2ecf32d78fe1d5df41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae29b41e17673893a3fb0ed6c38f2d23e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d15/group__fundamental.html#gae29b41e17673893a3fb0ed6c38f2d23e">cv::sfm::projectionsFromFundamental</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> F, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> P1, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> P2)</td></tr>
<tr class="memdesc:gae29b41e17673893a3fb0ed6c38f2d23e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get projection matrices from Fundamental matrix.  <a href="../../d7/d15/group__fundamental.html#gae29b41e17673893a3fb0ed6c38f2d23e">More...</a><br /></td></tr>
<tr class="separator:gae29b41e17673893a3fb0ed6c38f2d23e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae9ad20b15801475977147475eef82626"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d15/group__fundamental.html#gae9ad20b15801475977147475eef82626">cv::sfm::relativeCameraMotion</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> R1, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> t1, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> R2, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> t2, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> R, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> t)</td></tr>
<tr class="memdesc:gae9ad20b15801475977147475eef82626"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the relative camera motion between two cameras.  <a href="../../d7/d15/group__fundamental.html#gae9ad20b15801475977147475eef82626">More...</a><br /></td></tr>
<tr class="separator:gae9ad20b15801475977147475eef82626"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga42e4e05b414d11f3abc29612f058d249"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga42e4e05b414d11f3abc29612f058d249">&#9670;&nbsp;</a></span>computeOrientation()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::sfm::computeOrientation </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a>&#160;</td>
          <td class="paramname"><em>x1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a>&#160;</td>
          <td class="paramname"><em>x2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a>&#160;</td>
          <td class="paramname"><em>R</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a>&#160;</td>
          <td class="paramname"><em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>s</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code>#include &lt;<a class="el" href="../../d4/db1/fundamental_8hpp.html">opencv2/sfm/fundamental.hpp</a>&gt;</code></p>

<p>Computes Absolute or Exterior Orientation (Pose Estimation) between 2 sets of 3D point. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">x1</td><td>Input first 3xN or 2xN array of points. </td></tr>
    <tr><td class="paramname">x2</td><td>Input second 3xN or 2xN array of points. </td></tr>
    <tr><td class="paramname">R</td><td>Output 3x3 computed rotation matrix. </td></tr>
    <tr><td class="paramname">t</td><td>Output 3x1 computed translation vector. </td></tr>
    <tr><td class="paramname">s</td><td>Output computed scale factor.</td></tr>
  </table>
  </dd>
</dl>
<p>Find the best transformation such that xp=projection*(s*R*x+t) (same as Pose Estimation, ePNP). The routines below are only for the orthographic case for now. </p>

</div>
</div>
<a id="gab948a699b18e85ed516d6e8e0b32c9e3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab948a699b18e85ed516d6e8e0b32c9e3">&#9670;&nbsp;</a></span>essentialFromFundamental()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::sfm::essentialFromFundamental </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>F</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>K1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>K2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a>&#160;</td>
          <td class="paramname"><em>E</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code>#include &lt;<a class="el" href="../../d4/db1/fundamental_8hpp.html">opencv2/sfm/fundamental.hpp</a>&gt;</code></p>

<p>Get Essential matrix from Fundamental and Camera matrices. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">F</td><td>Input 3x3 fundamental matrix. </td></tr>
    <tr><td class="paramname">K1</td><td>Input 3x3 first camera matrix \(K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\). </td></tr>
    <tr><td class="paramname">K2</td><td>Input 3x3 second camera matrix. The parameters are similar to K1. </td></tr>
    <tr><td class="paramname">E</td><td>Output 3x3 essential matrix.</td></tr>
  </table>
  </dd>
</dl>
<p>Reference: <a class="el" href="../../d0/de3/citelist.html#CITEREF_HartleyZ00">[103]</a> 9.6 pag 257 (formula 9.12) </p>

</div>
</div>
<a id="ga732858c7d49c6a44a4a91451b3374350"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga732858c7d49c6a44a4a91451b3374350">&#9670;&nbsp;</a></span>essentialFromRt()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::sfm::essentialFromRt </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>R1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>t1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>R2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>t2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a>&#160;</td>
          <td class="paramname"><em>E</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code>#include &lt;<a class="el" href="../../d4/db1/fundamental_8hpp.html">opencv2/sfm/fundamental.hpp</a>&gt;</code></p>

<p>Get Essential matrix from Motion (R's and t's ). </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">R1</td><td>Input 3x3 first camera rotation matrix. </td></tr>
    <tr><td class="paramname">t1</td><td>Input 3x1 first camera translation vector. </td></tr>
    <tr><td class="paramname">R2</td><td>Input 3x3 second camera rotation matrix. </td></tr>
    <tr><td class="paramname">t2</td><td>Input 3x1 second camera translation vector. </td></tr>
    <tr><td class="paramname">E</td><td>Output 3x3 essential matrix.</td></tr>
  </table>
  </dd>
</dl>
<p>Reference: <a class="el" href="../../d0/de3/citelist.html#CITEREF_HartleyZ00">[103]</a> 9.6 pag 257 (formula 9.12) </p>

</div>
</div>
<a id="gaaac7556ce8ebb74b199d416a3e86861a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaaac7556ce8ebb74b199d416a3e86861a">&#9670;&nbsp;</a></span>fundamentalFromEssential()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::sfm::fundamentalFromEssential </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>E</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>K1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>K2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a>&#160;</td>
          <td class="paramname"><em>F</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code>#include &lt;<a class="el" href="../../d4/db1/fundamental_8hpp.html">opencv2/sfm/fundamental.hpp</a>&gt;</code></p>

<p>Get Essential matrix from Fundamental and Camera matrices. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">E</td><td>Input 3x3 essential matrix. </td></tr>
    <tr><td class="paramname">K1</td><td>Input 3x3 first camera matrix \(K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\). </td></tr>
    <tr><td class="paramname">K2</td><td>Input 3x3 second camera matrix. The parameters are similar to K1. </td></tr>
    <tr><td class="paramname">F</td><td>Output 3x3 fundamental matrix.</td></tr>
  </table>
  </dd>
</dl>
<p>Reference: <a class="el" href="../../d0/de3/citelist.html#CITEREF_HartleyZ00">[103]</a> 9.6 pag 257 (formula 9.12) or <a href="http://ai.stanford.edu/~birch/projective/node20.html">http://ai.stanford.edu/~birch/projective/node20.html</a> </p>

</div>
</div>
<a id="ga02efdf4480a63d680a5dada595a88aa8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga02efdf4480a63d680a5dada595a88aa8">&#9670;&nbsp;</a></span>fundamentalFromProjections()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::sfm::fundamentalFromProjections </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>P1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>P2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a>&#160;</td>
          <td class="paramname"><em>F</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code>#include &lt;<a class="el" href="../../d4/db1/fundamental_8hpp.html">opencv2/sfm/fundamental.hpp</a>&gt;</code></p>

<p>Get Fundamental matrix from Projection matrices. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">P1</td><td>Input 3x4 first projection matrix. </td></tr>
    <tr><td class="paramname">P2</td><td>Input 3x4 second projection matrix. </td></tr>
    <tr><td class="paramname">F</td><td>Output 3x3 fundamental matrix. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="gaee634880c5f298096ab2fc514de87cbd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaee634880c5f298096ab2fc514de87cbd">&#9670;&nbsp;</a></span>motionFromEssential()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::sfm::motionFromEssential </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>E</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a>&#160;</td>
          <td class="paramname"><em>Rs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a>&#160;</td>
          <td class="paramname"><em>ts</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code>#include &lt;<a class="el" href="../../d4/db1/fundamental_8hpp.html">opencv2/sfm/fundamental.hpp</a>&gt;</code></p>
<p>Get Motion (R's and t's ) from Essential matrix. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">E</td><td>Input 3x3 essential matrix. </td></tr>
    <tr><td class="paramname">Rs</td><td>Output vector of 3x3 rotation matrices. </td></tr>
    <tr><td class="paramname">ts</td><td>Output vector of 3x1 translation vectors.</td></tr>
  </table>
  </dd>
</dl>
<p>Reference: <a class="el" href="../../d0/de3/citelist.html#CITEREF_HartleyZ00">[103]</a> 9.6 pag 259 (Result 9.19) </p>

</div>
</div>
<a id="ga6bd98cb968781abf62659eedc0d0481e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6bd98cb968781abf62659eedc0d0481e">&#9670;&nbsp;</a></span>motionFromEssentialChooseSolution()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int cv::sfm::motionFromEssentialChooseSolution </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a>&#160;</td>
          <td class="paramname"><em>Rs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a>&#160;</td>
          <td class="paramname"><em>ts</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>K1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>x1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>K2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>x2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code>#include &lt;<a class="el" href="../../d4/db1/fundamental_8hpp.html">opencv2/sfm/fundamental.hpp</a>&gt;</code></p>
<p>Choose one of the four possible motion solutions from an essential matrix. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">Rs</td><td>Input vector of 3x3 rotation matrices. </td></tr>
    <tr><td class="paramname">ts</td><td>Input vector of 3x1 translation vectors. </td></tr>
    <tr><td class="paramname">K1</td><td>Input 3x3 first camera matrix \(K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\). </td></tr>
    <tr><td class="paramname">x1</td><td>Input 2x1 vector with first 2d point. </td></tr>
    <tr><td class="paramname">K2</td><td>Input 3x3 second camera matrix. The parameters are similar to K1. </td></tr>
    <tr><td class="paramname">x2</td><td>Input 2x1 vector with second 2d point.</td></tr>
  </table>
  </dd>
</dl>
<p>Decides the right solution by checking that the triangulation of a match x1&ndash;x2 lies in front of the cameras. Return index of the right solution or -1 if no solution.</p>
<p>Reference: See <a class="el" href="../../d0/de3/citelist.html#CITEREF_HartleyZ00">[103]</a> 9.6 pag 259 (9.6.3 Geometrical interpretation of the 4 solutions). </p>

</div>
</div>
<a id="gaa37cc469d0c0573be08c3d55f6f1be8f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa37cc469d0c0573be08c3d55f6f1be8f">&#9670;&nbsp;</a></span>normalizedEightPointSolver()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::sfm::normalizedEightPointSolver </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>x1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>x2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a>&#160;</td>
          <td class="paramname"><em>F</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code>#include &lt;<a class="el" href="../../d4/db1/fundamental_8hpp.html">opencv2/sfm/fundamental.hpp</a>&gt;</code></p>

<p>Estimate the fundamental matrix between two dataset of 2D point (image coords space). </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">x1</td><td>Input 2xN Array of 2D points in view 1. </td></tr>
    <tr><td class="paramname">x2</td><td>Input 2xN Array of 2D points in view 2. </td></tr>
    <tr><td class="paramname">F</td><td>Output 3x3 fundamental matrix.</td></tr>
  </table>
  </dd>
</dl>
<p>Uses the normalized 8-point fundamental matrix solver. Reference: <a class="el" href="../../d0/de3/citelist.html#CITEREF_HartleyZ00">[103]</a> 11.2 pag.281 (x1 = x, x2 = x') </p>

</div>
</div>
<a id="ga99db07182e74de2ecf32d78fe1d5df41"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga99db07182e74de2ecf32d78fe1d5df41">&#9670;&nbsp;</a></span>normalizeFundamental()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::sfm::normalizeFundamental </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>F</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a>&#160;</td>
          <td class="paramname"><em>F_normalized</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code>#include &lt;<a class="el" href="../../d4/db1/fundamental_8hpp.html">opencv2/sfm/fundamental.hpp</a>&gt;</code></p>

<p>Normalizes the Fundamental matrix. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">F</td><td>Input 3x3 fundamental matrix. </td></tr>
    <tr><td class="paramname">F_normalized</td><td>Output 3x3 normalized fundamental matrix.</td></tr>
  </table>
  </dd>
</dl>
<p>By default divides the fundamental matrix by its <a class="el" href="../../dc/daa/structcv_1_1L2.html">L2</a> norm. </p>

</div>
</div>
<a id="gae29b41e17673893a3fb0ed6c38f2d23e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae29b41e17673893a3fb0ed6c38f2d23e">&#9670;&nbsp;</a></span>projectionsFromFundamental()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::sfm::projectionsFromFundamental </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>F</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a>&#160;</td>
          <td class="paramname"><em>P1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a>&#160;</td>
          <td class="paramname"><em>P2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code>#include &lt;<a class="el" href="../../d4/db1/fundamental_8hpp.html">opencv2/sfm/fundamental.hpp</a>&gt;</code></p>

<p>Get projection matrices from Fundamental matrix. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">F</td><td>Input 3x3 fundamental matrix. </td></tr>
    <tr><td class="paramname">P1</td><td>Output 3x4 one possible projection matrix. </td></tr>
    <tr><td class="paramname">P2</td><td>Output 3x4 another possible projection matrix. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="gae9ad20b15801475977147475eef82626"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae9ad20b15801475977147475eef82626">&#9670;&nbsp;</a></span>relativeCameraMotion()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::sfm::relativeCameraMotion </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>R1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>t1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>R2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>t2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a>&#160;</td>
          <td class="paramname"><em>R</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a>&#160;</td>
          <td class="paramname"><em>t</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code>#include &lt;<a class="el" href="../../d4/db1/fundamental_8hpp.html">opencv2/sfm/fundamental.hpp</a>&gt;</code></p>

<p>Computes the relative camera motion between two cameras. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">R1</td><td>Input 3x3 first camera rotation matrix. </td></tr>
    <tr><td class="paramname">t1</td><td>Input 3x1 first camera translation vector. </td></tr>
    <tr><td class="paramname">R2</td><td>Input 3x3 second camera rotation matrix. </td></tr>
    <tr><td class="paramname">t2</td><td>Input 3x1 second camera translation vector. </td></tr>
    <tr><td class="paramname">R</td><td>Output 3x3 relative rotation matrix. </td></tr>
    <tr><td class="paramname">t</td><td>Output 3x1 relative translation vector.</td></tr>
  </table>
  </dd>
</dl>
<p>Given the motion parameters of two cameras, computes the motion parameters of the second one assuming the first one to be at the origin. If T1 and T2 are the camera motions, the computed relative motion is \(T = T_2 T_1^{-1}\) </p>

</div>
</div>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.8.6-->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Apr 2 2021 11:36:41 for OpenCV by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
<script type="text/javascript">
//<![CDATA[
addTutorialsButtons();
//]]>
</script>
</body>
</html>
